// 导入用来创建路由和确定路由模式的两个方法
import {
    createRouter, createWebHistory
} from 'vue-router'
import store from '@/store'
import storage from "@/utils/storage";

/**
 * 定义路由信息
 *
 */
const routes = [{
    name: 'login',alias: '/', path: '/login', component: () => import('@/components/login'),
}, {
    name: 'main',  path: '/main', component: () => import('@/components/main'),
    children: [
        {
            name: 'user', path: '/user', component: () => import('@/components/system/user/index')
        }
    ]

}]

// 创建路由实例并传递 `routes` 配置
// 我们在这里使用 html5 的路由模式，url中不带有#，部署项目的时候需要注意。
const router = createRouter({
    history: createWebHistory(), routes,
})


// 全局的路由守卫,会在每次路由跳转的时候执行
router.beforeEach((to) => {
    console.log(to);
    //1.如果去的是登录页面,就放行
    if (to.name ==='login'){
        return true;
    }
    console.log(store.getters.isLogin);
    //否则检查是否登录,如果已经登录则放行
    if (!store.getters.isLogin){
        //去storage查看,如果也没有就去登陆页面
        if (!storage.getSessionObject("loginUser")){
            router.push({name: 'login'});
        }else {
            store.dispatch("RECOVERY_USER");
            store.dispatch("GIT_INFO");
        }
    }
    //如果没有登录,就跳转到登录页面
    return true
})

// 讲路由实例导出
export default router